﻿using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;

namespace MimiDouban.Abstract
{
    /// <summary>
    /// 控制器的抽象接口。因为程序采用集中控制的设计方法。
    /// 所以控制器的主要作用是协调SongProvider，Player和UI这三个组件的相互协作
    /// </summary>
    public interface IController
    {
        /// <summary>
        /// 注入UI的引用，用于显示界面
        /// </summary>
        /// <param name="mainUI">注入的UI</param>
        void setMainUI(IMainUI mainUI);

        /// <summary>
        /// 注入SongProvider的引用，用于提供歌曲
        /// </summary>
        /// <param name="songProvider">注入的SongProvider</param>
        void setSongProvider(ISongProvider songProvider);
        
        /// <summary>
        /// 注入播放器的引用，用于播放歌曲
        /// </summary>
        /// <param name="player">注入的播放器</param>
        void setPlayer(IPlayer player);

        /// <summary>
        /// 系统开始运作
        /// </summary>
        void start();
    }
}
